Repository navigation
block: skip redundant flush for O_DSYNC direct writes - #1130
blktests-ci-kpd[bot] wants to merge 1 commit into
Conversation
|
Upstream branch: f5bbbfe |
ea2c39d to
4082a30
Compare
|
Upstream branch: 3d6d817 |
51f6171 to
d152057
Compare
4082a30 to
36bd7eb
Compare
|
Upstream branch: 3aa1dca |
d152057 to
50b301b
Compare
d89ab11 to
fdba928
Compare
|
Upstream branch: fd923b3 |
50b301b to
1599926
Compare
fdba928 to
60442a3
Compare
|
Upstream branch: 8d3ae59 |
1599926 to
995b260
Compare
60442a3 to
3df366e
Compare
|
Upstream branch: bd5f485 |
995b260 to
015445a
Compare
3df366e to
5dd70cb
Compare
|
Upstream branch: 66498c7 |
015445a to
ae2ecec
Compare
5dd70cb to
055a766
Compare
|
Upstream branch: 502d457 |
ae2ecec to
0fea863
Compare
055a766 to
341ae8c
Compare
|
Upstream branch: cf72cbb |
0fea863 to
2f3f79a
Compare
341ae8c to
940e422
Compare
|
Upstream branch: cee9395 |
2f3f79a to
e05cfb9
Compare
940e422 to
3cab524
Compare
|
Upstream branch: 89a3129 |
e05cfb9 to
5588db0
Compare
3cab524 to
8242bf1
Compare
|
Upstream branch: bc35965 |
5588db0 to
57a045a
Compare
8242bf1 to
5b28f57
Compare
|
Upstream branch: df29080 Pull request is NOT updated. Failed to apply https://patchwork.kernel.org/series/1144736/ conflict: |
5b28f57 to
4ddd216
Compare
|
Upstream branch: 28924df |
57a045a to
17e7f35
Compare
4ddd216 to
00cc4ca
Compare
|
Upstream branch: 893e117 |
17e7f35 to
88ef3d8
Compare
00cc4ca to
7efd8cd
Compare
|
Upstream branch: 50d05c7 |
For an O_DIRECT | O_DSYNC write to a block device, dio_bio_write_op()
adds REQ_FUA to the bio, so the data is durable when the direct-IO
returns. blkdev_write_iter() then falls through to
generic_write_sync(), which for O_DSYNC turns into an additional
REQ_PREFLUSH. That flush is redundant: the FUA write already made
the data persistent.
Skip generic_write_sync() when the direct-IO path already provided
durability via FUA. The buffered and direct_write_fallback() paths
are unchanged.
Measured on a Seagate ST20000NM007D (20 TB, 7200 rpm, fua=1,
write_cache=write back), Linux v7.2.0-rc7, single-threaded pwrite()
loop opening the raw block device with O_WRONLY | O_DIRECT | O_DSYNC,
4 KiB writes for 60 s:
Sequential 4 KiB writes:
baseline patched
IOPS 119.7 7497.0
avg latency (us) 8357 133
p50 latency (us) 8346 127
p99 latency (us) 8368 395
p99.9 latency (us) 8728 569
Random 4 KiB writes (100 GiB span):
baseline patched
IOPS 156.1 666.4
avg latency (us) 6405 1500
p50 latency (us) 6186 1450
p99 latency (us) 16133 2285
p99.9 latency (us) 17250 9916
Signed-off-by: Zhenxian Ma <mzx199711@gmail.com>
Signed-off-by: Zhenxian Ma <mazhenxian@xiaohongshu.com>
88ef3d8 to
55756ed
Compare
|
At least one diff in series https://patchwork.kernel.org/series/1144736/ irrelevant now for [{'archived': False, 'project': 241}] search patterns |
Pull request for series with
subject: block: skip redundant flush for O_DSYNC direct writes
version: 1
url: https://patchwork.kernel.org/project/linux-block/list/?series=1144736